package com.example.app2.feign;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;

/**
 * feign请求拦截器，调用feign方法之前，做一些处理
 * 比如，将token，操作人信息放到请求头
 * 操作人信息一般来自微服务网关（鉴权中心），网关会把当前登录人信息放到header，子服务可以从request header获取
 * 这里简单点，直接写死。
 *
 * 哪个feign client需要拦截，单独在注解中引用！！！
 *
 * Netflix feign和 openfeign都适用
 */
@Slf4j
public class FeignRequestInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {

        /*
        可以从header中获取，示例：
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        if (attributes == null) {
            return;
        }

        HttpServletRequest request = attributes.getRequest();
        String operator = request.getHeader("operator");
        String token = request.getHeader("token");
        */
        requestTemplate.header("operatorName", "app2user");
        requestTemplate.header("token", "app2token");

    }
}
